package com.spy.dish.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.spy.dish.domain.DishIngredient;
import com.spy.dish.domain.DishStep;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 新增菜品请求DTO
 * 用于接收创建新菜品的请求参数，包含菜品基本信息及关联的用料和步骤
 */
@Data
@ApiModel(description = "新增菜品请求参数")
public class DishDTO {
    /**
     * 菜品唯一标识（自增）
     */
    @ApiModelProperty("菜品唯一标识（自增）")
    private Long id;

    @NotBlank(message = "菜品名称不能为空")
    @ApiModelProperty(value = "菜品名称", example = "番茄炒蛋", required = true)
    private String dishName;

    @NotBlank(message = "菜品分类id不能为空")
    @ApiModelProperty(value = "菜品分类id", example = "1", required = true)
    private Long dishCategoryId;

    @ApiModelProperty(value = "菜品图片路径", example = "/images/dish/tomato-egg.jpg")
    private String dishImg;

    @ApiModelProperty(value = "辣度等级", example = "微辣")
    private String spiceLevel;

    @NotNull(message = "启用状态不能为空")
    @ApiModelProperty(value = "启用状态(1:启用,0:禁用)", example = "1", required = true)
    private Integer isEnabled;

    /**
     * 直接使用DishIngredient实体作为列表元素
     * 注意：此处无需设置dishId（由系统自动关联新创建的菜品ID）
     */
    @ApiModelProperty(value = "用料列表", notes = "可以为空；若不为空，需包含至少1条记录，且每条记录的ingredientName和quantity不能为空")
    private List<DishIngredient> ingredients;

    /**
     * 直接使用DishStep实体作为列表元素
     * 注意：此处无需设置dishId（由系统自动关联新创建的菜品ID）
     */
    @ApiModelProperty(value = "步骤列表", notes = "可以为空；若不为空，需包含至少1条记录，且每条记录的stepSort（连续）和stepDesc不能为空")
    private List<DishStep> steps;
}